package poc.scc.core;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import poc.scc.core.enums.StatusControladoria;
import poc.scc.core.enums.StatusConvenio;
import poc.scc.core.enums.TipoConvenio;
@Entity
@SequenceGenerator(name="seq",sequenceName="seq_convenio")
public class Convenio implements Serializable{
	private static final long serialVersionUID = 1L;
	
	@Id
	@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="seq")
	private Long id;
	
	private String objeto;
    private String numero;
    private String siafi;
    private String siafem;
    private String concedente;
    private String convenente;
    private String interveniente;
    
    @Column(name="data_inicio_vigencia")
    @Temporal(TemporalType.DATE)
    private Date dataInicioVigencia;
    
    @Column(name="data_fim_vigencia")
    @Temporal(TemporalType.DATE)
    private Date dataFimVigencia;
    
    private String gestor;
    
    @Embedded
    private ContaBancaria contaBancaria;
    
    @Column(name="valor_inicial_concedente")
    private BigDecimal valorInicialConcedente = BigDecimal.ZERO;
    
    @Column(name="valor_inicial_contrapartida")
    private BigDecimal valorInicialContrapartida = BigDecimal.ZERO;
    
    @Column(name="valor_total")
    private BigDecimal valorTotal;
    
    @Column(name="valor_total_liberado_ate_presente_data")
    private BigDecimal valorLiberadoAtePresenteData;
    
    @Column(name="status")
    @Enumerated(EnumType.STRING)
    private StatusConvenio status;
    
    @Column(name="status_controladoria")
    @Enumerated(EnumType.STRING)
    private StatusControladoria statusControladoria;
    
    @OneToMany
    @JoinColumn(name="convenio_id")
    private List<Contrato> contratos;
    
    @Column(name="tipo_convenio")
    @Enumerated(EnumType.STRING)
    private TipoConvenio tipoConvenio;

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getObjeto() {
		return objeto;
	}

	public void setObjeto(String objeto) {
		this.objeto = objeto;
	}

	public String getNumero() {
		return numero;
	}

	public void setNumero(String numero) {
		this.numero = numero;
	}

	public String getSiafi() {
		return siafi;
	}

	public void setSiafi(String siafi) {
		this.siafi = siafi;
	}

	public String getSiafem() {
		return siafem;
	}

	public void setSiafem(String siafem) {
		this.siafem = siafem;
	}

	public String getConcedente() {
		return concedente;
	}

	public void setConcedente(String concedente) {
		this.concedente = concedente;
	}

	public String getConvenente() {
		return convenente;
	}

	public void setConvenente(String convenente) {
		this.convenente = convenente;
	}

	public String getInterveniente() {
		return interveniente;
	}

	public void setInterveniente(String interveniente) {
		this.interveniente = interveniente;
	}

	public Date getDataInicioVigencia() {
		return dataInicioVigencia;
	}

	public void setDataInicioVigencia(Date dataInicioVigencia) {
		this.dataInicioVigencia = dataInicioVigencia;
	}

	public Date getDataFimVigencia() {
		return dataFimVigencia;
	}

	public void setDataFimVigencia(Date dataFimVigencia) {
		this.dataFimVigencia = dataFimVigencia;
	}

	public String getGestor() {
		return gestor;
	}

	public void setGestor(String gestor) {
		this.gestor = gestor;
	}

	public ContaBancaria getContaBancaria() {
		return contaBancaria;
	}

	public void setContaBancaria(ContaBancaria contaBancaria) {
		this.contaBancaria = contaBancaria;
	}

	public BigDecimal getValorInicialConcedente() {
		return valorInicialConcedente;
	}

	public void setValorInicialConcedente(BigDecimal valorInicialConcedente) {
		this.valorInicialConcedente = valorInicialConcedente;
	}

	public BigDecimal getValorInicialContrapartida() {
		return valorInicialContrapartida;
	}

	public void setValorInicialContrapartida(BigDecimal valorInicialContrapartida) {
		this.valorInicialContrapartida = valorInicialContrapartida;
	}

	public BigDecimal getValorTotal() {
		return valorTotal;
	}

	public void setValorTotal(BigDecimal valorTotal) {
		this.valorTotal = valorTotal;
	}

	public BigDecimal getValorLiberadoAtePresenteData() {
		return valorLiberadoAtePresenteData;
	}

	public void setValorLiberadoAtePresenteData(
			BigDecimal valorLiberadoAtePresenteData) {
		this.valorLiberadoAtePresenteData = valorLiberadoAtePresenteData;
	}

	public StatusConvenio getStatus() {
		return status;
	}

	public void setStatus(StatusConvenio status) {
		this.status = status;
	}

	public StatusControladoria getStatusControladoria() {
		return statusControladoria;
	}

	public void setStatusControladoria(StatusControladoria statusControladoria) {
		this.statusControladoria = statusControladoria;
	}

	public List<Contrato> getContratos() {
		return contratos;
	}

	public void setContratos(List<Contrato> contratos) {
		this.contratos = contratos;
	}

	public TipoConvenio getTipoConvenio() {
		return tipoConvenio;
	}

	public void setTipoConvenio(TipoConvenio tipoConvenio) {
		this.tipoConvenio = tipoConvenio;
	}

}
